﻿// License: The MIT License (MIT) Copyright (c) 2011..2012 Barend Gehrels

// Permission is hereby granted, free of charge, to any person obtaining a
// copy of this software and associated documentation files (the "Software"),
// to deal in the Software without restriction, including without limitation
// the rights to use, copy, modify, merge, publish, distribute, sublicense,
// and/or sell copies of the Software, and to permit persons to whom the
// Software is furnished to do so, subject to the following conditions:

// The above copyright notice and this permission notice shall be included in
// all copies or substantial portions of the Software.

// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
// DEALINGS IN THE SOFTWARE.

using System.Windows;
using System.Windows.Controls;

namespace GrooveSharp
{
    /// <summary>
    /// CompactInfo is designed for the main window in the mode "on top of other windows and as small as possible"
    /// </summary>
    public partial class CompactInfo : UserControl, IPlayer
    {

        TrackInfo m_info = new TrackInfo();

        public event RoutedEventHandler RatingChanged
        {
            add { AddHandler(Rating.RatingChangedEvent, value); }
            remove { RemoveHandler(Rating.RatingChangedEvent, value); }
        }


        public CompactInfo()
        {
            InitializeComponent();
            panelCompact.DataContext = null;
        }

        public void Play(TrackInfo info)
        {
            m_info = info;
            panelCompact.DataContext = null;
            panelCompact.DataContext = m_info;
        }

        public void Stop()
        {
            panelCompact.DataContext = null;
        }

        public void SetRating(TrackRating tr)
        {
            m_info.Rating = tr.Value;
        }

        private void UserControl_SizeChanged(object sender, SizeChangedEventArgs e)
        {
            // Let the image fit the left size of the control, with a max.
            double height = this.ActualHeight;
            double width = this.ActualWidth * 0.66;
            double newSize = height < width ? height : width;
            if (newSize > 250)
            {
                newSize = 250;
            }

            imageAlbum.Width = newSize;
            imageAlbum.Height = newSize;
        }
    }
}
